A network device, such as a router or a switch, may use a control plane and a forwarding plane to exchange data within a network or between different networks. The control plane may generate and maintain a routing table that lists routes and physical interface connections that may be used to forward data. For example, the routing table may include information identifying static routes or by routes identified through a dynamic routing protocol. When data from a new flow is received by the network device, the forwarding plane may use the routing table to identify an available path and may forward the data via the identified path. The forwarding plane may store, in a forwarding table, information associating the flow with the path so that additional data from the flow may also be routed via the same path.
To improve network performance, a software-defined network (SDN) may separate the control plane from the physical network. In an SDN, instructions for handing network traffic may be dynamically generated, and the instructions may control the manner in which the network device processes network traffic. For example, the instructions may control how network devices route traffic, prioritize different traffic, translate traffic between network protocols, etc.
For example, as described in Request for Comments (RFC) 4655 by the Internet Engineering Task Force (IETF), a computer, an application, a network node, etc. may function as a path computation element (PCE) for performing constraint-based path computations to determine suitable route through a network for conveying data between a source and a destination. For example, the PCE may receive a connection request from a path computation client (PCC), and based on a specified destination and other constraints associated with the request (e.g., a desired connection type or a desired bandwidth), the PCE may dynamically identify, to the PCC, nodes and links (or paths) to be used for the connection. The PCC may then exchange signals with other network elements to establish the connection via the identified nodes and/or links.
In another example, an SDN may be implemented using OPENFLOW. In OPENFLOW, a controller may collect data on the status of network devices, such as identifying available bandwidth, open ports, storage queue length, etc. at the network devices. The controller may apply various routing and/or logic rules to update the routing and/or the forwarding tables.